In any system where a plurality of function modules, also referred to as secondary stations, are interconnected by some sort of electrical communication bus and controlled by a programmable controller, also referred to as a primary station, the programmable controller requires information identifying the modules. This enables the programmable controller to send commands and information to selected modules and to identify the source of information sent by the modules to the programmable controller. This is normally accomplished by assigning a unique address, also referred to as an identifier, to each of the function modules.
One example of such a system is an existing computer system which include an electrical bus structure such as micro-channel, AT bus, etc. Expansion slots are typically present, often eight or more, in the housing containing the computer's motherboard. These expansion slots allow function modules, also referred to a expansion cards, to be electrically interconnected to the computer's bus structure. The central processing unit (CPU) of the computer then identifies each of the function modules in the system.
Yet another example of such a system is an article processing system such as a system for producing data bearing cards. In such a system there are often numerous function modules present. For example, an embosser function module, a magnetic stripe encoder function module, a card inserter function module, a card stacking function module, etc. might be present in one system. These functions may be installed optionally and arranged randomly under the control of a programmable controller. These are but two examples of the numerous systems having a plurality of function modules under the control of a controller.
Typically in a system having multiple function modules, the system might be configured such that different modules might be present or the modules arranged in varying sequences. The programmable controller must be able to identify the modules and their functions and in some systems, such as article processing systems, must be able to identify the physical sequence of the modules along the bus.
In the prior art, the unique static address of each function module is typically established through adjustment of hardware in the device, such as by burning the static address into the read only memory (ROM), or by setting DIP switches or jumper settings. A communication controller in each peripheral device is then programmed to respond only to messages containing addresses matching the number stored in ROM or set by the switches.
The disadvantage of using a ROM in each peripheral device is that the ROM must be different for each device. If, for instance, two embossers are connected to the same bus, the ROM in one embosser must be altered. The use of switches in each module makes it easier for a user to give each module a unique address. However, if there are a large number of modules, this method will require an operator to set a large number of switches. Therefore, this method is prone to operator error.
A further requirement of some multiple module systems, such as systems which process an article, is that the sequence of the modules along the bus must be known. With a modular concept, there could be any number of modules, connected in any order. Moveover, modules might be added or deleted or even have their order changed. The method of burning a static address into the ROM or the method of operators setting DIP switches will not ensure the ability to detect a connection sequence of the modules.
An example of a dynamic address assignment system is described in U.S. Pat. No. 4,773,005 to Sullivan. Each module on the serial bus contains a ROM storing a number representing the modular type. Each module further includes four switches to distinguish between two modules of the same type. The programmable controller then assigns an address as determined by the numbers stored in ROM in combination with the DIP switch setting. While this method achieves dynamic addressing, it is still prone to operator error due to the switch setting on modules of the same type.
What has been needed, therefore, is a dynamic addressing system.
What has been further needed is a dynamic addressing procedure for addressing modules, such that a number of modules may be connected in any order and the order of the modules will be known.
What has been even further needed has been an automatic module addressing system which is totally transparent to the operator and requires no intervention or special installation procedures.
The present invention provides these long felt needs and offers other advantages over the prior art.